package com.yidu.t299.controller.fxj;

import com.yidu.t299.domain.fxj.ClassRoom;
import com.yidu.t299.service.fxj.ClassRoomBiz;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@RestController
public class ClassRoomController {
    @Resource
    private ClassRoomBiz classRoomBiz;

    /**
     * 分页查询显示数据在表格中
     *
     * @param limit 页码
     * @param page  每页的行数
     * @return 映射集合对象
     */
    @GetMapping("classRoom/restful_classRoom")
    public Map<String, Object> findAll(int limit, int page, ClassRoom classRoom) {
        // 根据对象得到条件字符串
        String condition = classRoomBiz.getCondition(classRoom);
        // 按条件统计总记录行数
        int count = classRoomBiz.selectCount(condition);
        // 按条件分页查询
        List<ClassRoom> classRoomList = classRoomBiz.selectByPage(limit, page - 1, condition);
        // 创建一个map，用来存放返回给layui组件需要的键值对
        Map<String, Object> mapData = new HashMap<String, Object>();
        // 在映射集合中添加key为code，值为0的状态码
        mapData.put("code", 0);
        // 在映射集合中添加key为msg，值为空字符串的响应信息字符串
        mapData.put("msg", "");
        // 在映射集合中添加为count，值为总行数的映射
        mapData.put("count", count);
        // 在映射集合中添加key为data，值为校区对象集合的映射
        mapData.put("data", classRoomList);
        // 把映射集合响应到客户端
        return mapData;
    }

    /**
     * 添加一个
     * 
     * @return 提示信息字符串
     */
    @PostMapping("classRoom/restful_classRoom")
    public String addEmp(@RequestBody ClassRoom classRoom) {
        // 调用业务层实现新增员校区，并返回正确与否字符串
        return classRoomBiz.insert(classRoom) > 0 ? "add-success" : "add-failure";
    }

    /**
     * 修改校区信息
     * 
     * @return 提示信息字符串
     */
    @PutMapping("classRoom/restful_classRoom")
    public String updateEmp(@RequestBody ClassRoom classRoom) {
        // 调用业务层实现修改校区，并返回正确与否字符串
        return classRoomBiz.updateByPrimaryKey(classRoom) > 0 ? "update-success" : "update-failure";
    }

    /**
     * 根据校区编号删除校区
     * 
     * @return 提示信息字符串
     */
    @DeleteMapping("classRoom/restful_classRoom/{classRoomId}")
    public String deleteEmpById(@PathVariable("classRoomId") int classRoomId) {
        // 调用业务层实现删除校区，并返回正确与否字符串
        return classRoomBiz.deleteByPrimaryKey(classRoomId) > 0 ? "delete-success" : "delete-failure";
    }

    /**
     * 根据多个校区编号批量删除校区
     * 此方法使用put请求替代delete，put可以带请求体
     * 
     * @return 提示信息字符串
     */
    @PutMapping("classRoom/batchDel")
    public String deleteEmpByManyId(@RequestParam String classRoomIdStr) {
        // 按,号分割成字符串数组
        String[] strArrays = classRoomIdStr.split(",");
        // 循环按校区编号删除
        for (String str : strArrays) {
            // 只要有一个删除错误就直接返回错误信息字符串
            if (classRoomBiz.deleteByPrimaryKey(Integer.parseInt(str)) < 1) {
                return "delete-failure";
            }
        }
        return "delete-success";
    }

}
